// Copyright (c) 2017-2025 Tencent. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package v20230418

import (
    tcerr "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/common/errors"
    tchttp "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/common/http"
    "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/common/json"
)

// Predefined struct for user
type CreateRabbitMQServerlessBindingRequestParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Source exchange.
	Source *string `json:"Source,omitnil,omitempty" name:"Source"`

	// Target type. valid values: queue or exchange.
	DestinationType *string `json:"DestinationType,omitnil,omitempty" name:"DestinationType"`

	// Target queue or exchange.
	Destination *string `json:"Destination,omitnil,omitempty" name:"Destination"`

	// Binding key.
	RoutingKey *string `json:"RoutingKey,omitnil,omitempty" name:"RoutingKey"`
}

type CreateRabbitMQServerlessBindingRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Source exchange.
	Source *string `json:"Source,omitnil,omitempty" name:"Source"`

	// Target type. valid values: queue or exchange.
	DestinationType *string `json:"DestinationType,omitnil,omitempty" name:"DestinationType"`

	// Target queue or exchange.
	Destination *string `json:"Destination,omitnil,omitempty" name:"Destination"`

	// Binding key.
	RoutingKey *string `json:"RoutingKey,omitnil,omitempty" name:"RoutingKey"`
}

func (r *CreateRabbitMQServerlessBindingRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateRabbitMQServerlessBindingRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "Source")
	delete(f, "DestinationType")
	delete(f, "Destination")
	delete(f, "RoutingKey")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateRabbitMQServerlessBindingRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateRabbitMQServerlessBindingResponseParams struct {
	// Queue name.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// binding Id.
	BindingId *int64 `json:"BindingId,omitnil,omitempty" name:"BindingId"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type CreateRabbitMQServerlessBindingResponse struct {
	*tchttp.BaseResponse
	Response *CreateRabbitMQServerlessBindingResponseParams `json:"Response"`
}

func (r *CreateRabbitMQServerlessBindingResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateRabbitMQServerlessBindingResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateRabbitMQServerlessExchangeRequestParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// VHost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// exchange name.
	ExchangeName *string `json:"ExchangeName,omitnil,omitempty" name:"ExchangeName"`

	// Specifies the exchange type. valid values: "fanout", "direct", "topic", "headers".
	ExchangeType *string `json:"ExchangeType,omitnil,omitempty" name:"ExchangeType"`

	// Specifies the remark for exchange.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// Specifies whether it is a persistent exchange. when the cluster restarts, all exchanges with this field set to "false" will be cleared.
	Durable *bool `json:"Durable,omitnil,omitempty" name:"Durable"`

	// Whether to auto-delete this exchange. if set to "true", the exchange will be automatically deleted when all routing relationships on the current exchange are unbound.
	AutoDelete *bool `json:"AutoDelete,omitnil,omitempty" name:"AutoDelete"`

	// Specifies whether it is an internal exchange. if set to "true", messages cannot be directly delivered to this exchange. they need to be forwarded through another exchange in the routing settings.
	Internal *bool `json:"Internal,omitnil,omitempty" name:"Internal"`

	// Alternative exchange. if a message cannot be sent to the current exchange, it will be sent to this alternative exchange.
	AlternateExchange *string `json:"AlternateExchange,omitnil,omitempty" name:"AlternateExchange"`
}

type CreateRabbitMQServerlessExchangeRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// VHost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// exchange name.
	ExchangeName *string `json:"ExchangeName,omitnil,omitempty" name:"ExchangeName"`

	// Specifies the exchange type. valid values: "fanout", "direct", "topic", "headers".
	ExchangeType *string `json:"ExchangeType,omitnil,omitempty" name:"ExchangeType"`

	// Specifies the remark for exchange.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// Specifies whether it is a persistent exchange. when the cluster restarts, all exchanges with this field set to "false" will be cleared.
	Durable *bool `json:"Durable,omitnil,omitempty" name:"Durable"`

	// Whether to auto-delete this exchange. if set to "true", the exchange will be automatically deleted when all routing relationships on the current exchange are unbound.
	AutoDelete *bool `json:"AutoDelete,omitnil,omitempty" name:"AutoDelete"`

	// Specifies whether it is an internal exchange. if set to "true", messages cannot be directly delivered to this exchange. they need to be forwarded through another exchange in the routing settings.
	Internal *bool `json:"Internal,omitnil,omitempty" name:"Internal"`

	// Alternative exchange. if a message cannot be sent to the current exchange, it will be sent to this alternative exchange.
	AlternateExchange *string `json:"AlternateExchange,omitnil,omitempty" name:"AlternateExchange"`
}

func (r *CreateRabbitMQServerlessExchangeRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateRabbitMQServerlessExchangeRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "ExchangeName")
	delete(f, "ExchangeType")
	delete(f, "Remark")
	delete(f, "Durable")
	delete(f, "AutoDelete")
	delete(f, "Internal")
	delete(f, "AlternateExchange")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateRabbitMQServerlessExchangeRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateRabbitMQServerlessExchangeResponseParams struct {
	// exchange name.
	ExchangeName *string `json:"ExchangeName,omitnil,omitempty" name:"ExchangeName"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type CreateRabbitMQServerlessExchangeResponse struct {
	*tchttp.BaseResponse
	Response *CreateRabbitMQServerlessExchangeResponseParams `json:"Response"`
}

func (r *CreateRabbitMQServerlessExchangeResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateRabbitMQServerlessExchangeResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateRabbitMQServerlessQueueRequestParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// VHost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Queue name.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`

	// Supports only classic.
	QueueType *string `json:"QueueType,omitnil,omitempty" name:"QueueType"`

	// Durable flag. specifies that for the classic type, it must be passed in. for the quorum type, there is no need to pass it in and it is fixed as true.
	Durable *bool `json:"Durable,omitnil,omitempty" name:"Durable"`

	// Automatic cleanup. the classic type must be passed. the quorum type does not need to be passed and is fixed as false.
	AutoDelete *bool `json:"AutoDelete,omitnil,omitempty" name:"AutoDelete"`

	// Remarks
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// The MessageTTL parameter specifies settings dedicated to the classic type.
	MessageTTL *int64 `json:"MessageTTL,omitnil,omitempty" name:"MessageTTL"`

	// The AutoExpire parameter, in milliseconds, indicates that the queue will be deleted if it is not used within a specified time.
	AutoExpire *int64 `json:"AutoExpire,omitnil,omitempty" name:"AutoExpire"`

	// MaxLength parameter. specifies the maximum number of entries the queue can hold. if the limit is exceeded, it will be handled according to the overview behavior.
	MaxLength *int64 `json:"MaxLength,omitnil,omitempty" name:"MaxLength"`

	// The MaxLengthBytes parameter specifies the maximum length in bytes. if the value exceeds the limit, it will be handled according to the overview behavior.
	MaxLengthBytes *int64 `json:"MaxLengthBytes,omitnil,omitempty" name:"MaxLengthBytes"`

	// DeliveryLimit parameter. specifies the parameter dedicated to the quorum type.
	DeliveryLimit *int64 `json:"DeliveryLimit,omitnil,omitempty" name:"DeliveryLimit"`

	// OverflowBehaviour parameter specifies a value of drop-head, reject-publish, or reject-publish-dlx.
	OverflowBehaviour *string `json:"OverflowBehaviour,omitnil,omitempty" name:"OverflowBehaviour"`

	// The DeadLetterExchange parameter specifies that expired or rejected messages can be routed to a designated dead letter exchange.
	DeadLetterExchange *string `json:"DeadLetterExchange,omitnil,omitempty" name:"DeadLetterExchange"`

	// The DeadLetterRoutingKey parameter specifies that it can only contain letters, digits, ".", "-", "@", and "_".
	DeadLetterRoutingKey *string `json:"DeadLetterRoutingKey,omitnil,omitempty" name:"DeadLetterRoutingKey"`

	// The SingleActiveConsumer parameter. if enabled, ensure that there is only one consumer consuming from the queue every time.
	SingleActiveConsumer *bool `json:"SingleActiveConsumer,omitnil,omitempty" name:"SingleActiveConsumer"`

	// MaximumPriority parameter. specifies that it is dedicated for the classic type.
	MaximumPriority *int64 `json:"MaximumPriority,omitnil,omitempty" name:"MaximumPriority"`

	// LazyMode parameter. specifies that it is dedicated for the classic type.
	LazyMode *bool `json:"LazyMode,omitnil,omitempty" name:"LazyMode"`

	// The MasterLocator parameter, dedicated to the classic type, specifies a value of min-masters, client-local, or random.
	MasterLocator *string `json:"MasterLocator,omitnil,omitempty" name:"MasterLocator"`

	// MaxInMemoryLength parameter, dedicated for quorum type. specifies the maximum number of messages in memory for quorum queues.
	MaxInMemoryLength *int64 `json:"MaxInMemoryLength,omitnil,omitempty" name:"MaxInMemoryLength"`

	// The MaxInMemoryBytes parameter is dedicated to the quorum type. it specifies the maximum total message size in memory for quorum queues.
	MaxInMemoryBytes *int64 `json:"MaxInMemoryBytes,omitnil,omitempty" name:"MaxInMemoryBytes"`

	// Node parameter. optional. specifies the node where the specified creation queue is located.
	Node *string `json:"Node,omitnil,omitempty" name:"Node"`

	// Consistency policy for dead-letter in arbitrating queues. specifies valid values: at-most-once, at-least-once. at-most-once is selected by default.
	DeadLetterStrategy *string `json:"DeadLetterStrategy,omitnil,omitempty" name:"DeadLetterStrategy"`

	// Specifies the leader election strategy for the arbitration queue. valid values are client-local and balanced. the default value is client-local.
	QueueLeaderLocator *string `json:"QueueLeaderLocator,omitnil,omitempty" name:"QueueLeaderLocator"`

	// Specifies the initial replica group size of the arbitration queue. the default value is 3.
	QuorumInitialGroupSize *int64 `json:"QuorumInitialGroupSize,omitnil,omitempty" name:"QuorumInitialGroupSize"`
}

type CreateRabbitMQServerlessQueueRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// VHost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Queue name.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`

	// Supports only classic.
	QueueType *string `json:"QueueType,omitnil,omitempty" name:"QueueType"`

	// Durable flag. specifies that for the classic type, it must be passed in. for the quorum type, there is no need to pass it in and it is fixed as true.
	Durable *bool `json:"Durable,omitnil,omitempty" name:"Durable"`

	// Automatic cleanup. the classic type must be passed. the quorum type does not need to be passed and is fixed as false.
	AutoDelete *bool `json:"AutoDelete,omitnil,omitempty" name:"AutoDelete"`

	// Remarks
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// The MessageTTL parameter specifies settings dedicated to the classic type.
	MessageTTL *int64 `json:"MessageTTL,omitnil,omitempty" name:"MessageTTL"`

	// The AutoExpire parameter, in milliseconds, indicates that the queue will be deleted if it is not used within a specified time.
	AutoExpire *int64 `json:"AutoExpire,omitnil,omitempty" name:"AutoExpire"`

	// MaxLength parameter. specifies the maximum number of entries the queue can hold. if the limit is exceeded, it will be handled according to the overview behavior.
	MaxLength *int64 `json:"MaxLength,omitnil,omitempty" name:"MaxLength"`

	// The MaxLengthBytes parameter specifies the maximum length in bytes. if the value exceeds the limit, it will be handled according to the overview behavior.
	MaxLengthBytes *int64 `json:"MaxLengthBytes,omitnil,omitempty" name:"MaxLengthBytes"`

	// DeliveryLimit parameter. specifies the parameter dedicated to the quorum type.
	DeliveryLimit *int64 `json:"DeliveryLimit,omitnil,omitempty" name:"DeliveryLimit"`

	// OverflowBehaviour parameter specifies a value of drop-head, reject-publish, or reject-publish-dlx.
	OverflowBehaviour *string `json:"OverflowBehaviour,omitnil,omitempty" name:"OverflowBehaviour"`

	// The DeadLetterExchange parameter specifies that expired or rejected messages can be routed to a designated dead letter exchange.
	DeadLetterExchange *string `json:"DeadLetterExchange,omitnil,omitempty" name:"DeadLetterExchange"`

	// The DeadLetterRoutingKey parameter specifies that it can only contain letters, digits, ".", "-", "@", and "_".
	DeadLetterRoutingKey *string `json:"DeadLetterRoutingKey,omitnil,omitempty" name:"DeadLetterRoutingKey"`

	// The SingleActiveConsumer parameter. if enabled, ensure that there is only one consumer consuming from the queue every time.
	SingleActiveConsumer *bool `json:"SingleActiveConsumer,omitnil,omitempty" name:"SingleActiveConsumer"`

	// MaximumPriority parameter. specifies that it is dedicated for the classic type.
	MaximumPriority *int64 `json:"MaximumPriority,omitnil,omitempty" name:"MaximumPriority"`

	// LazyMode parameter. specifies that it is dedicated for the classic type.
	LazyMode *bool `json:"LazyMode,omitnil,omitempty" name:"LazyMode"`

	// The MasterLocator parameter, dedicated to the classic type, specifies a value of min-masters, client-local, or random.
	MasterLocator *string `json:"MasterLocator,omitnil,omitempty" name:"MasterLocator"`

	// MaxInMemoryLength parameter, dedicated for quorum type. specifies the maximum number of messages in memory for quorum queues.
	MaxInMemoryLength *int64 `json:"MaxInMemoryLength,omitnil,omitempty" name:"MaxInMemoryLength"`

	// The MaxInMemoryBytes parameter is dedicated to the quorum type. it specifies the maximum total message size in memory for quorum queues.
	MaxInMemoryBytes *int64 `json:"MaxInMemoryBytes,omitnil,omitempty" name:"MaxInMemoryBytes"`

	// Node parameter. optional. specifies the node where the specified creation queue is located.
	Node *string `json:"Node,omitnil,omitempty" name:"Node"`

	// Consistency policy for dead-letter in arbitrating queues. specifies valid values: at-most-once, at-least-once. at-most-once is selected by default.
	DeadLetterStrategy *string `json:"DeadLetterStrategy,omitnil,omitempty" name:"DeadLetterStrategy"`

	// Specifies the leader election strategy for the arbitration queue. valid values are client-local and balanced. the default value is client-local.
	QueueLeaderLocator *string `json:"QueueLeaderLocator,omitnil,omitempty" name:"QueueLeaderLocator"`

	// Specifies the initial replica group size of the arbitration queue. the default value is 3.
	QuorumInitialGroupSize *int64 `json:"QuorumInitialGroupSize,omitnil,omitempty" name:"QuorumInitialGroupSize"`
}

func (r *CreateRabbitMQServerlessQueueRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateRabbitMQServerlessQueueRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "QueueName")
	delete(f, "QueueType")
	delete(f, "Durable")
	delete(f, "AutoDelete")
	delete(f, "Remark")
	delete(f, "MessageTTL")
	delete(f, "AutoExpire")
	delete(f, "MaxLength")
	delete(f, "MaxLengthBytes")
	delete(f, "DeliveryLimit")
	delete(f, "OverflowBehaviour")
	delete(f, "DeadLetterExchange")
	delete(f, "DeadLetterRoutingKey")
	delete(f, "SingleActiveConsumer")
	delete(f, "MaximumPriority")
	delete(f, "LazyMode")
	delete(f, "MasterLocator")
	delete(f, "MaxInMemoryLength")
	delete(f, "MaxInMemoryBytes")
	delete(f, "Node")
	delete(f, "DeadLetterStrategy")
	delete(f, "QueueLeaderLocator")
	delete(f, "QuorumInitialGroupSize")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateRabbitMQServerlessQueueRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateRabbitMQServerlessQueueResponseParams struct {
	// Queue name.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type CreateRabbitMQServerlessQueueResponse struct {
	*tchttp.BaseResponse
	Response *CreateRabbitMQServerlessQueueResponseParams `json:"Response"`
}

func (r *CreateRabbitMQServerlessQueueResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateRabbitMQServerlessQueueResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateRabbitMQServerlessUserRequestParams struct {
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the username used when logging in.
	User *string `json:"User,omitnil,omitempty" name:"User"`

	// Password. specifies the password used when logging in.
	Password *string `json:"Password,omitnil,omitempty" name:"Password"`

	// Description
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// The serverless instance field is invalid.
	Tags []*string `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Specifies the maximum number of connections for this user. if not specified, there is no limit.
	MaxConnections *int64 `json:"MaxConnections,omitnil,omitempty" name:"MaxConnections"`

	// Specifies the maximum number of channels for the user. if not specified, there is no limit.
	MaxChannels *int64 `json:"MaxChannels,omitnil,omitempty" name:"MaxChannels"`
}

type CreateRabbitMQServerlessUserRequest struct {
	*tchttp.BaseRequest
	
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the username used when logging in.
	User *string `json:"User,omitnil,omitempty" name:"User"`

	// Password. specifies the password used when logging in.
	Password *string `json:"Password,omitnil,omitempty" name:"Password"`

	// Description
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// The serverless instance field is invalid.
	Tags []*string `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Specifies the maximum number of connections for this user. if not specified, there is no limit.
	MaxConnections *int64 `json:"MaxConnections,omitnil,omitempty" name:"MaxConnections"`

	// Specifies the maximum number of channels for the user. if not specified, there is no limit.
	MaxChannels *int64 `json:"MaxChannels,omitnil,omitempty" name:"MaxChannels"`
}

func (r *CreateRabbitMQServerlessUserRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateRabbitMQServerlessUserRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "User")
	delete(f, "Password")
	delete(f, "Description")
	delete(f, "Tags")
	delete(f, "MaxConnections")
	delete(f, "MaxChannels")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateRabbitMQServerlessUserRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateRabbitMQServerlessUserResponseParams struct {
	// Specifies the username used when logging in.
	User *string `json:"User,omitnil,omitempty" name:"User"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type CreateRabbitMQServerlessUserResponse struct {
	*tchttp.BaseResponse
	Response *CreateRabbitMQServerlessUserResponseParams `json:"Response"`
}

func (r *CreateRabbitMQServerlessUserResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateRabbitMQServerlessUserResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateRabbitMQServerlessVirtualHostRequestParams struct {
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost name
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Description information
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// Message trace switch. specifies that the value "true" turns it on, "false" turns it off. indicates that it is off by default.
	TraceFlag *bool `json:"TraceFlag,omitnil,omitempty" name:"TraceFlag"`

	// Specifies whether to create a mirrored queue policy. the default value is true.
	MirrorQueuePolicyFlag *bool `json:"MirrorQueuePolicyFlag,omitnil,omitempty" name:"MirrorQueuePolicyFlag"`
}

type CreateRabbitMQServerlessVirtualHostRequest struct {
	*tchttp.BaseRequest
	
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost name
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Description information
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// Message trace switch. specifies that the value "true" turns it on, "false" turns it off. indicates that it is off by default.
	TraceFlag *bool `json:"TraceFlag,omitnil,omitempty" name:"TraceFlag"`

	// Specifies whether to create a mirrored queue policy. the default value is true.
	MirrorQueuePolicyFlag *bool `json:"MirrorQueuePolicyFlag,omitnil,omitempty" name:"MirrorQueuePolicyFlag"`
}

func (r *CreateRabbitMQServerlessVirtualHostRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateRabbitMQServerlessVirtualHostRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "Description")
	delete(f, "TraceFlag")
	delete(f, "MirrorQueuePolicyFlag")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "CreateRabbitMQServerlessVirtualHostRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type CreateRabbitMQServerlessVirtualHostResponseParams struct {
	// Vhost name
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type CreateRabbitMQServerlessVirtualHostResponse struct {
	*tchttp.BaseResponse
	Response *CreateRabbitMQServerlessVirtualHostResponseParams `json:"Response"`
}

func (r *CreateRabbitMQServerlessVirtualHostResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *CreateRabbitMQServerlessVirtualHostResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteRabbitMQServerlessBindingRequestParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// binding relationship Id.
	BindingId *int64 `json:"BindingId,omitnil,omitempty" name:"BindingId"`
}

type DeleteRabbitMQServerlessBindingRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// binding relationship Id.
	BindingId *int64 `json:"BindingId,omitnil,omitempty" name:"BindingId"`
}

func (r *DeleteRabbitMQServerlessBindingRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteRabbitMQServerlessBindingRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "BindingId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteRabbitMQServerlessBindingRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteRabbitMQServerlessBindingResponseParams struct {
	// Queue name.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// binding relationship Id.
	BindingId *int64 `json:"BindingId,omitnil,omitempty" name:"BindingId"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DeleteRabbitMQServerlessBindingResponse struct {
	*tchttp.BaseResponse
	Response *DeleteRabbitMQServerlessBindingResponseParams `json:"Response"`
}

func (r *DeleteRabbitMQServerlessBindingResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteRabbitMQServerlessBindingResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteRabbitMQServerlessExchangeRequestParams struct {
	// Instance id.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// exchange name.
	ExchangeName *string `json:"ExchangeName,omitnil,omitempty" name:"ExchangeName"`
}

type DeleteRabbitMQServerlessExchangeRequest struct {
	*tchttp.BaseRequest
	
	// Instance id.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// exchange name.
	ExchangeName *string `json:"ExchangeName,omitnil,omitempty" name:"ExchangeName"`
}

func (r *DeleteRabbitMQServerlessExchangeRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteRabbitMQServerlessExchangeRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "ExchangeName")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteRabbitMQServerlessExchangeRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteRabbitMQServerlessExchangeResponseParams struct {
	// exchange name.
	ExchangeName *string `json:"ExchangeName,omitnil,omitempty" name:"ExchangeName"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DeleteRabbitMQServerlessExchangeResponse struct {
	*tchttp.BaseResponse
	Response *DeleteRabbitMQServerlessExchangeResponseParams `json:"Response"`
}

func (r *DeleteRabbitMQServerlessExchangeResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteRabbitMQServerlessExchangeResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteRabbitMQServerlessPermissionRequestParams struct {
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the username used when logging in.
	User *string `json:"User,omitnil,omitempty" name:"User"`

	// Specifies the vhost name.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`
}

type DeleteRabbitMQServerlessPermissionRequest struct {
	*tchttp.BaseRequest
	
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the username used when logging in.
	User *string `json:"User,omitnil,omitempty" name:"User"`

	// Specifies the vhost name.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`
}

func (r *DeleteRabbitMQServerlessPermissionRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteRabbitMQServerlessPermissionRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "User")
	delete(f, "VirtualHost")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteRabbitMQServerlessPermissionRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteRabbitMQServerlessPermissionResponseParams struct {
	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DeleteRabbitMQServerlessPermissionResponse struct {
	*tchttp.BaseResponse
	Response *DeleteRabbitMQServerlessPermissionResponseParams `json:"Response"`
}

func (r *DeleteRabbitMQServerlessPermissionResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteRabbitMQServerlessPermissionResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteRabbitMQServerlessQueueRequestParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Queue name.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`
}

type DeleteRabbitMQServerlessQueueRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Queue name.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`
}

func (r *DeleteRabbitMQServerlessQueueRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteRabbitMQServerlessQueueRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "QueueName")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteRabbitMQServerlessQueueRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteRabbitMQServerlessQueueResponseParams struct {
	// Queue name.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DeleteRabbitMQServerlessQueueResponse struct {
	*tchttp.BaseResponse
	Response *DeleteRabbitMQServerlessQueueResponseParams `json:"Response"`
}

func (r *DeleteRabbitMQServerlessQueueResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteRabbitMQServerlessQueueResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteRabbitMQServerlessUserRequestParams struct {
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the username used when logging in.
	User *string `json:"User,omitnil,omitempty" name:"User"`
}

type DeleteRabbitMQServerlessUserRequest struct {
	*tchttp.BaseRequest
	
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the username used when logging in.
	User *string `json:"User,omitnil,omitempty" name:"User"`
}

func (r *DeleteRabbitMQServerlessUserRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteRabbitMQServerlessUserRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "User")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteRabbitMQServerlessUserRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteRabbitMQServerlessUserResponseParams struct {
	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DeleteRabbitMQServerlessUserResponse struct {
	*tchttp.BaseResponse
	Response *DeleteRabbitMQServerlessUserResponseParams `json:"Response"`
}

func (r *DeleteRabbitMQServerlessUserResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteRabbitMQServerlessUserResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteRabbitMQServerlessVirtualHostRequestParams struct {
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost name.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`
}

type DeleteRabbitMQServerlessVirtualHostRequest struct {
	*tchttp.BaseRequest
	
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost name.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`
}

func (r *DeleteRabbitMQServerlessVirtualHostRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteRabbitMQServerlessVirtualHostRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DeleteRabbitMQServerlessVirtualHostRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DeleteRabbitMQServerlessVirtualHostResponseParams struct {
	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DeleteRabbitMQServerlessVirtualHostResponse struct {
	*tchttp.BaseResponse
	Response *DeleteRabbitMQServerlessVirtualHostResponseParams `json:"Response"`
}

func (r *DeleteRabbitMQServerlessVirtualHostResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DeleteRabbitMQServerlessVirtualHostResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessBindingsRequestParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Pagination Offset
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Pagination Limit
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Search keywords. do fuzzy search based on source exchange name, target resource name or binding key.
	SearchWord *string `json:"SearchWord,omitnil,omitempty" name:"SearchWord"`

	// Search and filter precisely according to the source Exchange.
	SourceExchange *string `json:"SourceExchange,omitnil,omitempty" name:"SourceExchange"`

	// Specifies precise search filter based on target QueueName. cannot set simultaneously with DestinationExchange filter.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`

	// Precise search filter based on target Exchange. cannot set it simultaneously with QueueName filter.
	DestinationExchange *string `json:"DestinationExchange,omitnil,omitempty" name:"DestinationExchange"`
}

type DescribeRabbitMQServerlessBindingsRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Pagination Offset
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Pagination Limit
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Search keywords. do fuzzy search based on source exchange name, target resource name or binding key.
	SearchWord *string `json:"SearchWord,omitnil,omitempty" name:"SearchWord"`

	// Search and filter precisely according to the source Exchange.
	SourceExchange *string `json:"SourceExchange,omitnil,omitempty" name:"SourceExchange"`

	// Specifies precise search filter based on target QueueName. cannot set simultaneously with DestinationExchange filter.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`

	// Precise search filter based on target Exchange. cannot set it simultaneously with QueueName filter.
	DestinationExchange *string `json:"DestinationExchange,omitnil,omitempty" name:"DestinationExchange"`
}

func (r *DescribeRabbitMQServerlessBindingsRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessBindingsRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "Offset")
	delete(f, "Limit")
	delete(f, "SearchWord")
	delete(f, "SourceExchange")
	delete(f, "QueueName")
	delete(f, "DestinationExchange")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeRabbitMQServerlessBindingsRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessBindingsResponseParams struct {
	// Route relationship list
	BindingInfoList []*RabbitMQBindingListInfo `json:"BindingInfoList,omitnil,omitempty" name:"BindingInfoList"`

	// Quantity
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeRabbitMQServerlessBindingsResponse struct {
	*tchttp.BaseResponse
	Response *DescribeRabbitMQServerlessBindingsResponseParams `json:"Response"`
}

func (r *DescribeRabbitMQServerlessBindingsResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessBindingsResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessConnectionRequestParams struct {
	// instance ID		
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost name.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`
}

type DescribeRabbitMQServerlessConnectionRequest struct {
	*tchttp.BaseRequest
	
	// instance ID		
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost name.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`
}

func (r *DescribeRabbitMQServerlessConnectionRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessConnectionRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeRabbitMQServerlessConnectionRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessConnectionResponseParams struct {
	// Return the number of connections.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// List of connection details.
	Connections []*RabbitMQConnection `json:"Connections,omitnil,omitempty" name:"Connections"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeRabbitMQServerlessConnectionResponse struct {
	*tchttp.BaseResponse
	Response *DescribeRabbitMQServerlessConnectionResponseParams `json:"Response"`
}

func (r *DescribeRabbitMQServerlessConnectionResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessConnectionResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessConsumersRequestParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Queue name.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`

	// Pagination limit
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Pagination offset
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Search keywords
	SearchWord *string `json:"SearchWord,omitnil,omitempty" name:"SearchWord"`
}

type DescribeRabbitMQServerlessConsumersRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Queue name.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`

	// Pagination limit
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Pagination offset
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Search keywords
	SearchWord *string `json:"SearchWord,omitnil,omitempty" name:"SearchWord"`
}

func (r *DescribeRabbitMQServerlessConsumersRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessConsumersRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "QueueName")
	delete(f, "Limit")
	delete(f, "Offset")
	delete(f, "SearchWord")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeRabbitMQServerlessConsumersRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessConsumersResponseParams struct {
	// Consumer list information.
	ConsumerInfoList []*RabbitMQConsumersListInfo `json:"ConsumerInfoList,omitnil,omitempty" name:"ConsumerInfoList"`

	// Quantity
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeRabbitMQServerlessConsumersResponse struct {
	*tchttp.BaseResponse
	Response *DescribeRabbitMQServerlessConsumersResponseParams `json:"Response"`
}

func (r *DescribeRabbitMQServerlessConsumersResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessConsumersResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessExchangeDetailRequestParams struct {
	// Instance id.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// exchange name.
	ExchangeName *string `json:"ExchangeName,omitnil,omitempty" name:"ExchangeName"`
}

type DescribeRabbitMQServerlessExchangeDetailRequest struct {
	*tchttp.BaseRequest
	
	// Instance id.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// exchange name.
	ExchangeName *string `json:"ExchangeName,omitnil,omitempty" name:"ExchangeName"`
}

func (r *DescribeRabbitMQServerlessExchangeDetailRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessExchangeDetailRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "ExchangeName")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeRabbitMQServerlessExchangeDetailRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessExchangeDetailResponseParams struct {
	// exchange name.
	ExchangeName *string `json:"ExchangeName,omitnil,omitempty" name:"ExchangeName"`

	// Remarks.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// Specifies whether it is a persistent exchange. when the cluster restarts, all exchanges with this field set to "false" will be cleared.
	Durable *bool `json:"Durable,omitnil,omitempty" name:"Durable"`

	// Whether to auto-delete this exchange. if set to "true", the exchange will be automatically deleted when all routing relationships on the current exchange are unbound.
	AutoDelete *bool `json:"AutoDelete,omitnil,omitempty" name:"AutoDelete"`

	// Specifies whether it is an internal exchange. if set to "true", messages cannot be directly delivered to this exchange. they need to be forwarded through another exchange in the routing settings.
	Internal *bool `json:"Internal,omitnil,omitempty" name:"Internal"`

	// Alternative exchange. if a message does not match all queues or exchanges bound to the current exchange, it will be sent to this alternative exchange.
	AlternateExchange *string `json:"AlternateExchange,omitnil,omitempty" name:"AlternateExchange"`

	// Specifies the exchange type. valid values: "fanout", "direct", "topic", "headers".
	ExchangeType *string `json:"ExchangeType,omitnil,omitempty" name:"ExchangeType"`

	// VHost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// exchange creator. valid values: `system` (generated by the system), `user` (user-created).
	ExchangeCreator *string `json:"ExchangeCreator,omitnil,omitempty" name:"ExchangeCreator"`

	// Additional parameters key-value string.
	Arguments *string `json:"Arguments,omitnil,omitempty" name:"Arguments"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeRabbitMQServerlessExchangeDetailResponse struct {
	*tchttp.BaseResponse
	Response *DescribeRabbitMQServerlessExchangeDetailResponseParams `json:"Response"`
}

func (r *DescribeRabbitMQServerlessExchangeDetailResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessExchangeDetailResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessExchangesRequestParams struct {
	// Instance id.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Paging offset.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Paginate limit.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Search keywords support fuzzy matching.
	SearchWord *string `json:"SearchWord,omitnil,omitempty" name:"SearchWord"`

	// Specifies the filter type for each selected element in the array of exchange types.
	ExchangeTypeFilters []*string `json:"ExchangeTypeFilters,omitnil,omitempty" name:"ExchangeTypeFilters"`

	// Specifies the exchange creation source. valid values: "system" (generated by the system), "user" (user-created).
	ExchangeCreatorFilters []*string `json:"ExchangeCreatorFilters,omitnil,omitempty" name:"ExchangeCreatorFilters"`

	// exchange name. specifies that it is used for exact matching.
	ExchangeName *string `json:"ExchangeName,omitnil,omitempty" name:"ExchangeName"`

	// Sorting field.
	// MessageRateInOut specifies the total production and consumption rate.
	// MessageRateIn specifies the production rate.
	// MessageRateOut specifies the consumption rate.
	SortElement *string `json:"SortElement,omitnil,omitempty" name:"SortElement"`

	// Sort order. valid values: ascend or descend.
	SortOrder *string `json:"SortOrder,omitnil,omitempty" name:"SortOrder"`
}

type DescribeRabbitMQServerlessExchangesRequest struct {
	*tchttp.BaseRequest
	
	// Instance id.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Paging offset.
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Paginate limit.
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Search keywords support fuzzy matching.
	SearchWord *string `json:"SearchWord,omitnil,omitempty" name:"SearchWord"`

	// Specifies the filter type for each selected element in the array of exchange types.
	ExchangeTypeFilters []*string `json:"ExchangeTypeFilters,omitnil,omitempty" name:"ExchangeTypeFilters"`

	// Specifies the exchange creation source. valid values: "system" (generated by the system), "user" (user-created).
	ExchangeCreatorFilters []*string `json:"ExchangeCreatorFilters,omitnil,omitempty" name:"ExchangeCreatorFilters"`

	// exchange name. specifies that it is used for exact matching.
	ExchangeName *string `json:"ExchangeName,omitnil,omitempty" name:"ExchangeName"`

	// Sorting field.
	// MessageRateInOut specifies the total production and consumption rate.
	// MessageRateIn specifies the production rate.
	// MessageRateOut specifies the consumption rate.
	SortElement *string `json:"SortElement,omitnil,omitempty" name:"SortElement"`

	// Sort order. valid values: ascend or descend.
	SortOrder *string `json:"SortOrder,omitnil,omitempty" name:"SortOrder"`
}

func (r *DescribeRabbitMQServerlessExchangesRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessExchangesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "Offset")
	delete(f, "Limit")
	delete(f, "SearchWord")
	delete(f, "ExchangeTypeFilters")
	delete(f, "ExchangeCreatorFilters")
	delete(f, "ExchangeName")
	delete(f, "SortElement")
	delete(f, "SortOrder")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeRabbitMQServerlessExchangesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessExchangesResponseParams struct {
	// exchanges list.
	ExchangeInfoList []*RabbitMQExchangeListInfo `json:"ExchangeInfoList,omitnil,omitempty" name:"ExchangeInfoList"`

	// Total count of exchanges.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeRabbitMQServerlessExchangesResponse struct {
	*tchttp.BaseResponse
	Response *DescribeRabbitMQServerlessExchangesResponseParams `json:"Response"`
}

func (r *DescribeRabbitMQServerlessExchangesResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessExchangesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessInstanceRequestParams struct {
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

type DescribeRabbitMQServerlessInstanceRequest struct {
	*tchttp.BaseRequest
	
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`
}

func (r *DescribeRabbitMQServerlessInstanceRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessInstanceRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeRabbitMQServerlessInstanceRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessInstanceResponseParams struct {
	// Cluster information.
	ClusterInfo *RabbitMQClusterInfo `json:"ClusterInfo,omitnil,omitempty" name:"ClusterInfo"`

	// Specifies the cluster specification information.
	ClusterSpecInfo *RabbitMQClusterSpecInfo `json:"ClusterSpecInfo,omitnil,omitempty" name:"ClusterSpecInfo"`

	// Specifies the quota information of the vhost.
	VirtualHostQuota *VirtualHostQuota `json:"VirtualHostQuota,omitnil,omitempty" name:"VirtualHostQuota"`

	// Specifies the exchange quota information.
	ExchangeQuota *ExchangeQuota `json:"ExchangeQuota,omitnil,omitempty" name:"ExchangeQuota"`

	// Specifies the quota information of the queue.
	QueueQuota *QueueQuota `json:"QueueQuota,omitnil,omitempty" name:"QueueQuota"`

	// Network information.
	ClusterNetInfo *RabbitMQServerlessAccessInfo `json:"ClusterNetInfo,omitnil,omitempty" name:"ClusterNetInfo"`

	// Public network allowlist information.
	ClusterWhiteListInfo *RabbitMQServerlessWhiteListInfo `json:"ClusterWhiteListInfo,omitnil,omitempty" name:"ClusterWhiteListInfo"`

	// Specifies the quota information of the user.
	UserQuota *UserQuota `json:"UserQuota,omitnil,omitempty" name:"UserQuota"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeRabbitMQServerlessInstanceResponse struct {
	*tchttp.BaseResponse
	Response *DescribeRabbitMQServerlessInstanceResponseParams `json:"Response"`
}

func (r *DescribeRabbitMQServerlessInstanceResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessInstanceResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessPermissionRequestParams struct {
	// instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the username for query filtering. if not provided, all will be queried.
	User *string `json:"User,omitnil,omitempty" name:"User"`

	// Specifies the vhost name. used for query filtering. if it is not provided, query all.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Pagination offset
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Pagination limit
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

type DescribeRabbitMQServerlessPermissionRequest struct {
	*tchttp.BaseRequest
	
	// instance ID.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the username for query filtering. if not provided, all will be queried.
	User *string `json:"User,omitnil,omitempty" name:"User"`

	// Specifies the vhost name. used for query filtering. if it is not provided, query all.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Pagination offset
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Pagination limit
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`
}

func (r *DescribeRabbitMQServerlessPermissionRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessPermissionRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "User")
	delete(f, "VirtualHost")
	delete(f, "Offset")
	delete(f, "Limit")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeRabbitMQServerlessPermissionRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessPermissionResponseParams struct {
	// Return the number of permissions.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// List of permission details.
	RabbitMQPermissionList []*RabbitMQPermission `json:"RabbitMQPermissionList,omitnil,omitempty" name:"RabbitMQPermissionList"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeRabbitMQServerlessPermissionResponse struct {
	*tchttp.BaseResponse
	Response *DescribeRabbitMQServerlessPermissionResponseParams `json:"Response"`
}

func (r *DescribeRabbitMQServerlessPermissionResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessPermissionResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessQueueDetailRequestParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Queue name.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`
}

type DescribeRabbitMQServerlessQueueDetailRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Queue name.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`
}

func (r *DescribeRabbitMQServerlessQueueDetailRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessQueueDetailRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "QueueName")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeRabbitMQServerlessQueueDetailRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessQueueDetailResponseParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Queue name.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`

	// Specifies the queue type. the valid values are classic or quorum.
	QueueType *string `json:"QueueType,omitnil,omitempty" name:"QueueType"`

	// Number of online consumers.
	Consumers *int64 `json:"Consumers,omitnil,omitempty" name:"Consumers"`

	// Durable flag.
	Durable *bool `json:"Durable,omitnil,omitempty" name:"Durable"`

	// Automatic cleanup.
	AutoDelete *bool `json:"AutoDelete,omitnil,omitempty" name:"AutoDelete"`

	// Remarks
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// MessageTTL parameter, dedicated for classic type.
	MessageTTL *int64 `json:"MessageTTL,omitnil,omitempty" name:"MessageTTL"`

	// AutoExpire parameter.
	AutoExpire *int64 `json:"AutoExpire,omitnil,omitempty" name:"AutoExpire"`

	// MaxLength parameter.
	MaxLength *int64 `json:"MaxLength,omitnil,omitempty" name:"MaxLength"`

	// MaxLengthBytes parameter.
	MaxLengthBytes *int64 `json:"MaxLengthBytes,omitnil,omitempty" name:"MaxLengthBytes"`

	// DeliveryLimit parameter. specifies the parameter dedicated to the quorum type.
	DeliveryLimit *int64 `json:"DeliveryLimit,omitnil,omitempty" name:"DeliveryLimit"`

	// OverflowBehaviour parameter specifies a value of drop-head, reject-publish, or reject-publish-dlx.
	OverflowBehaviour *string `json:"OverflowBehaviour,omitnil,omitempty" name:"OverflowBehaviour"`

	// DeadLetterExchange parameter.
	DeadLetterExchange *string `json:"DeadLetterExchange,omitnil,omitempty" name:"DeadLetterExchange"`

	// The DeadLetterRoutingKey parameter.
	DeadLetterRoutingKey *string `json:"DeadLetterRoutingKey,omitnil,omitempty" name:"DeadLetterRoutingKey"`

	// SingleActiveConsumer parameter.
	SingleActiveConsumer *bool `json:"SingleActiveConsumer,omitnil,omitempty" name:"SingleActiveConsumer"`

	// MaximumPriority parameter. specifies that it is dedicated for the classic type.
	MaximumPriority *int64 `json:"MaximumPriority,omitnil,omitempty" name:"MaximumPriority"`

	// LazyMode parameter, dedicated for classic type.
	LazyMode *bool `json:"LazyMode,omitnil,omitempty" name:"LazyMode"`

	// MasterLocator parameter, dedicated for classic type.
	MasterLocator *string `json:"MasterLocator,omitnil,omitempty" name:"MasterLocator"`

	// MaxInMemoryLength parameter, dedicated for quorum type.
	MaxInMemoryLength *int64 `json:"MaxInMemoryLength,omitnil,omitempty" name:"MaxInMemoryLength"`

	// The MaxInMemoryBytes parameter is dedicated to the quorum type.
	MaxInMemoryBytes *int64 `json:"MaxInMemoryBytes,omitnil,omitempty" name:"MaxInMemoryBytes"`

	// Create timestamp, in seconds.
	CreateTime *int64 `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Node.
	Node *string `json:"Node,omitnil,omitempty" name:"Node"`

	// Arbitration queue dead letter consistency policy.
	DeadLetterStrategy *string `json:"DeadLetterStrategy,omitnil,omitempty" name:"DeadLetterStrategy"`

	// Leadership election policy for arbitration queue.
	QueueLeaderLocator *string `json:"QueueLeaderLocator,omitnil,omitempty" name:"QueueLeaderLocator"`

	// Specifies the initial replica group size of the arbitration queue.
	QuorumInitialGroupSize *int64 `json:"QuorumInitialGroupSize,omitnil,omitempty" name:"QuorumInitialGroupSize"`

	// Whether it is an exclusive queue.
	Exclusive *bool `json:"Exclusive,omitnil,omitempty" name:"Exclusive"`

	// The name of the policy that takes effect.
	Policy *string `json:"Policy,omitnil,omitempty" name:"Policy"`

	// Additional parameters key-value.
	Arguments *string `json:"Arguments,omitnil,omitempty" name:"Arguments"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeRabbitMQServerlessQueueDetailResponse struct {
	*tchttp.BaseResponse
	Response *DescribeRabbitMQServerlessQueueDetailResponseParams `json:"Response"`
}

func (r *DescribeRabbitMQServerlessQueueDetailResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessQueueDetailResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessQueuesRequestParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Pagination offset
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Pagination limit
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Search keywords
	SearchWord *string `json:"SearchWord,omitnil,omitempty" name:"SearchWord"`

	// Specifies the queue type filter criteria. if it is left blank or set to "all", it indicates classic and quorum queues; if set to "classic", it filters classic queues; if set to "quorum", it filters quorum queues.
	QueueType *string `json:"QueueType,omitnil,omitempty" name:"QueueType"`

	// Sorting field.
	// ConsumerNumber: specifies the number of online consumers.
	// MessageHeapCount specifies the number of message backlogs.
	// MessageRateInOut specifies the total production and consumption rate.
	// MessageRateIn specifies the production rate.
	// MessageRateOut specifies the consumption rate.
	SortElement *string `json:"SortElement,omitnil,omitempty" name:"SortElement"`

	// Sort order. valid values: ascend or descend.
	SortOrder *string `json:"SortOrder,omitnil,omitempty" name:"SortOrder"`
}

type DescribeRabbitMQServerlessQueuesRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Pagination offset
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Pagination limit
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Search keywords
	SearchWord *string `json:"SearchWord,omitnil,omitempty" name:"SearchWord"`

	// Specifies the queue type filter criteria. if it is left blank or set to "all", it indicates classic and quorum queues; if set to "classic", it filters classic queues; if set to "quorum", it filters quorum queues.
	QueueType *string `json:"QueueType,omitnil,omitempty" name:"QueueType"`

	// Sorting field.
	// ConsumerNumber: specifies the number of online consumers.
	// MessageHeapCount specifies the number of message backlogs.
	// MessageRateInOut specifies the total production and consumption rate.
	// MessageRateIn specifies the production rate.
	// MessageRateOut specifies the consumption rate.
	SortElement *string `json:"SortElement,omitnil,omitempty" name:"SortElement"`

	// Sort order. valid values: ascend or descend.
	SortOrder *string `json:"SortOrder,omitnil,omitempty" name:"SortOrder"`
}

func (r *DescribeRabbitMQServerlessQueuesRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessQueuesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "Offset")
	delete(f, "Limit")
	delete(f, "SearchWord")
	delete(f, "QueueType")
	delete(f, "SortElement")
	delete(f, "SortOrder")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeRabbitMQServerlessQueuesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessQueuesResponseParams struct {
	// Queue list information.
	QueueInfoList []*RabbitMQQueueListInfo `json:"QueueInfoList,omitnil,omitempty" name:"QueueInfoList"`

	// Quantity
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeRabbitMQServerlessQueuesResponse struct {
	*tchttp.BaseResponse
	Response *DescribeRabbitMQServerlessQueuesResponseParams `json:"Response"`
}

func (r *DescribeRabbitMQServerlessQueuesResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessQueuesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessUserRequestParams struct {
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Retrieves usernames. supports prefix match and suffix matching.
	SearchUser *string `json:"SearchUser,omitnil,omitempty" name:"SearchUser"`

	// Pagination offset
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Pagination limit
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Specifies the username for an exact query.
	User *string `json:"User,omitnil,omitempty" name:"User"`

	// User tag. filters by Tag filter list.
	Tags []*string `json:"Tags,omitnil,omitempty" name:"Tags"`
}

type DescribeRabbitMQServerlessUserRequest struct {
	*tchttp.BaseRequest
	
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Retrieves usernames. supports prefix match and suffix matching.
	SearchUser *string `json:"SearchUser,omitnil,omitempty" name:"SearchUser"`

	// Pagination offset
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Pagination limit
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Specifies the username for an exact query.
	User *string `json:"User,omitnil,omitempty" name:"User"`

	// User tag. filters by Tag filter list.
	Tags []*string `json:"Tags,omitnil,omitempty" name:"Tags"`
}

func (r *DescribeRabbitMQServerlessUserRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessUserRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "SearchUser")
	delete(f, "Offset")
	delete(f, "Limit")
	delete(f, "User")
	delete(f, "Tags")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeRabbitMQServerlessUserRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessUserResponseParams struct {
	// The number of returned users.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Currently created RabbitMQ list of users.
	RabbitMQUserList []*RabbitMQUser `json:"RabbitMQUserList,omitnil,omitempty" name:"RabbitMQUserList"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeRabbitMQServerlessUserResponse struct {
	*tchttp.BaseResponse
	Response *DescribeRabbitMQServerlessUserResponseParams `json:"Response"`
}

func (r *DescribeRabbitMQServerlessUserResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessUserResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessVirtualHostRequestParams struct {
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost name. if it is not provided, query all.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Pagination offset
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Pagination limit
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// search-virtual-host: specifies fuzzy name search of vhost names. earlier, it supported both prefix and suffix matching.
	Filters *Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Sorting field.
	// MessageHeapCount specifies the number of message backlogs.
	// MessageRateInOut specifies the total production and consumption rate.
	// MessageRateIn specifies the production rate.
	// MessageRateOut specifies the consumption rate.
	SortElement *string `json:"SortElement,omitnil,omitempty" name:"SortElement"`

	// Sort order. valid values: ascend or descend.
	SortOrder *string `json:"SortOrder,omitnil,omitempty" name:"SortOrder"`
}

type DescribeRabbitMQServerlessVirtualHostRequest struct {
	*tchttp.BaseRequest
	
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost name. if it is not provided, query all.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Pagination offset
	Offset *int64 `json:"Offset,omitnil,omitempty" name:"Offset"`

	// Pagination limit
	Limit *int64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// search-virtual-host: specifies fuzzy name search of vhost names. earlier, it supported both prefix and suffix matching.
	Filters *Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Sorting field.
	// MessageHeapCount specifies the number of message backlogs.
	// MessageRateInOut specifies the total production and consumption rate.
	// MessageRateIn specifies the production rate.
	// MessageRateOut specifies the consumption rate.
	SortElement *string `json:"SortElement,omitnil,omitempty" name:"SortElement"`

	// Sort order. valid values: ascend or descend.
	SortOrder *string `json:"SortOrder,omitnil,omitempty" name:"SortOrder"`
}

func (r *DescribeRabbitMQServerlessVirtualHostRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessVirtualHostRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "Offset")
	delete(f, "Limit")
	delete(f, "Filters")
	delete(f, "SortElement")
	delete(f, "SortOrder")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "DescribeRabbitMQServerlessVirtualHostRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type DescribeRabbitMQServerlessVirtualHostResponseParams struct {
	// Return the number of vhosts.
	TotalCount *int64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// Specifies the list of details of the vhost.
	VirtualHostList []*RabbitMQVirtualHostInfo `json:"VirtualHostList,omitnil,omitempty" name:"VirtualHostList"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type DescribeRabbitMQServerlessVirtualHostResponse struct {
	*tchttp.BaseResponse
	Response *DescribeRabbitMQServerlessVirtualHostResponseParams `json:"Response"`
}

func (r *DescribeRabbitMQServerlessVirtualHostResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *DescribeRabbitMQServerlessVirtualHostResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type ExchangeQuota struct {
	// Specifies the maximum number of exchanges that can be created.
	MaxExchange *int64 `json:"MaxExchange,omitnil,omitempty" name:"MaxExchange"`

	// Specifies the number of exchanges that have been created.
	UsedExchange *int64 `json:"UsedExchange,omitnil,omitempty" name:"UsedExchange"`
}

type Filter struct {
	// name.
	Name *string `json:"Name,omitnil,omitempty" name:"Name"`

	// Value.
	Values []*string `json:"Values,omitnil,omitempty" name:"Values"`
}

// Predefined struct for user
type ListRabbitMQServerlessInstancesRequestParams struct {
	// Filter criteria.
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Page size.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Starting index value for pagination.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`
}

type ListRabbitMQServerlessInstancesRequest struct {
	*tchttp.BaseRequest
	
	// Filter criteria.
	Filters []*Filter `json:"Filters,omitnil,omitempty" name:"Filters"`

	// Page size.
	Limit *uint64 `json:"Limit,omitnil,omitempty" name:"Limit"`

	// Starting index value for pagination.
	Offset *uint64 `json:"Offset,omitnil,omitempty" name:"Offset"`
}

func (r *ListRabbitMQServerlessInstancesRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ListRabbitMQServerlessInstancesRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "Filters")
	delete(f, "Limit")
	delete(f, "Offset")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ListRabbitMQServerlessInstancesRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ListRabbitMQServerlessInstancesResponseParams struct {
	// Instance list
	Instances []*RabbitMQServerlessInstance `json:"Instances,omitnil,omitempty" name:"Instances"`

	// Total number.
	TotalCount *uint64 `json:"TotalCount,omitnil,omitempty" name:"TotalCount"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type ListRabbitMQServerlessInstancesResponse struct {
	*tchttp.BaseResponse
	Response *ListRabbitMQServerlessInstancesResponseParams `json:"Response"`
}

func (r *ListRabbitMQServerlessInstancesResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ListRabbitMQServerlessInstancesResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyRabbitMQServerlessExchangeRequestParams struct {
	// Instance id.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// exchange name.
	ExchangeName *string `json:"ExchangeName,omitnil,omitempty" name:"ExchangeName"`

	// Remarks
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

type ModifyRabbitMQServerlessExchangeRequest struct {
	*tchttp.BaseRequest
	
	// Instance id.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// exchange name.
	ExchangeName *string `json:"ExchangeName,omitnil,omitempty" name:"ExchangeName"`

	// Remarks
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

func (r *ModifyRabbitMQServerlessExchangeRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyRabbitMQServerlessExchangeRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "ExchangeName")
	delete(f, "Remark")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyRabbitMQServerlessExchangeRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyRabbitMQServerlessExchangeResponseParams struct {
	// exchange name.
	ExchangeName *string `json:"ExchangeName,omitnil,omitempty" name:"ExchangeName"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type ModifyRabbitMQServerlessExchangeResponse struct {
	*tchttp.BaseResponse
	Response *ModifyRabbitMQServerlessExchangeResponseParams `json:"Response"`
}

func (r *ModifyRabbitMQServerlessExchangeResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyRabbitMQServerlessExchangeResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyRabbitMQServerlessInstanceRequestParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Cluster name.
	ClusterName *string `json:"ClusterName,omitnil,omitempty" name:"ClusterName"`

	// Remarks
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// Whether trace is enabled.
	TraceFlag *bool `json:"TraceFlag,omitnil,omitempty" name:"TraceFlag"`
}

type ModifyRabbitMQServerlessInstanceRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Cluster name.
	ClusterName *string `json:"ClusterName,omitnil,omitempty" name:"ClusterName"`

	// Remarks
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// Whether trace is enabled.
	TraceFlag *bool `json:"TraceFlag,omitnil,omitempty" name:"TraceFlag"`
}

func (r *ModifyRabbitMQServerlessInstanceRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyRabbitMQServerlessInstanceRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "ClusterName")
	delete(f, "Remark")
	delete(f, "TraceFlag")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyRabbitMQServerlessInstanceRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyRabbitMQServerlessInstanceResponseParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type ModifyRabbitMQServerlessInstanceResponse struct {
	*tchttp.BaseResponse
	Response *ModifyRabbitMQServerlessInstanceResponseParams `json:"Response"`
}

func (r *ModifyRabbitMQServerlessInstanceResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyRabbitMQServerlessInstanceResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyRabbitMQServerlessPermissionRequestParams struct {
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the username, which is the user associated with the permission.
	User *string `json:"User,omitnil,omitempty" name:"User"`

	// Specifies the vhost name.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Types of permissions. declare related operations. for the user, it is operable to perform operations on the resource name under the vhost that matches the regular expression.
	ConfigRegexp *string `json:"ConfigRegexp,omitnil,omitempty" name:"ConfigRegexp"`

	// Types of permissions. message write related operations. the user can operate on the resource names under the vhost that match the regular expression.
	WriteRegexp *string `json:"WriteRegexp,omitnil,omitempty" name:"WriteRegexp"`

	// Types of permissions. message read related operations. the user can operate on the resource name under the vhost that matches the regular expression.
	ReadRegexp *string `json:"ReadRegexp,omitnil,omitempty" name:"ReadRegexp"`
}

type ModifyRabbitMQServerlessPermissionRequest struct {
	*tchttp.BaseRequest
	
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the username, which is the user associated with the permission.
	User *string `json:"User,omitnil,omitempty" name:"User"`

	// Specifies the vhost name.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Types of permissions. declare related operations. for the user, it is operable to perform operations on the resource name under the vhost that matches the regular expression.
	ConfigRegexp *string `json:"ConfigRegexp,omitnil,omitempty" name:"ConfigRegexp"`

	// Types of permissions. message write related operations. the user can operate on the resource names under the vhost that match the regular expression.
	WriteRegexp *string `json:"WriteRegexp,omitnil,omitempty" name:"WriteRegexp"`

	// Types of permissions. message read related operations. the user can operate on the resource name under the vhost that matches the regular expression.
	ReadRegexp *string `json:"ReadRegexp,omitnil,omitempty" name:"ReadRegexp"`
}

func (r *ModifyRabbitMQServerlessPermissionRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyRabbitMQServerlessPermissionRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "User")
	delete(f, "VirtualHost")
	delete(f, "ConfigRegexp")
	delete(f, "WriteRegexp")
	delete(f, "ReadRegexp")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyRabbitMQServerlessPermissionRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyRabbitMQServerlessPermissionResponseParams struct {
	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type ModifyRabbitMQServerlessPermissionResponse struct {
	*tchttp.BaseResponse
	Response *ModifyRabbitMQServerlessPermissionResponseParams `json:"Response"`
}

func (r *ModifyRabbitMQServerlessPermissionResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyRabbitMQServerlessPermissionResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyRabbitMQServerlessQueueRequestParams struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Queue name.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`

	// Newly modified remark.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

type ModifyRabbitMQServerlessQueueRequest struct {
	*tchttp.BaseRequest
	
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Queue name.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`

	// Newly modified remark.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`
}

func (r *ModifyRabbitMQServerlessQueueRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyRabbitMQServerlessQueueRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "QueueName")
	delete(f, "Remark")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyRabbitMQServerlessQueueRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyRabbitMQServerlessQueueResponseParams struct {
	// Queue name.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`

	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type ModifyRabbitMQServerlessQueueResponse struct {
	*tchttp.BaseResponse
	Response *ModifyRabbitMQServerlessQueueResponseParams `json:"Response"`
}

func (r *ModifyRabbitMQServerlessQueueResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyRabbitMQServerlessQueueResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyRabbitMQServerlessUserRequestParams struct {
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the username.
	User *string `json:"User,omitnil,omitempty" name:"User"`

	// Password. specifies the password.
	Password *string `json:"Password,omitnil,omitempty" name:"Password"`

	// Description. if not provided, no modification will be made.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// User tag. specifies to determine the access permission scope of this user to RabbitMQ Management. if it is not passed in, no modification will be made.
	Tags []*string `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Specifies the maximum number of connections for this user. if not provided, it will not be modified.
	MaxConnections *int64 `json:"MaxConnections,omitnil,omitempty" name:"MaxConnections"`

	// Specifies the maximum number of channels for this user. if not provided, it will not be modified.
	MaxChannels *int64 `json:"MaxChannels,omitnil,omitempty" name:"MaxChannels"`
}

type ModifyRabbitMQServerlessUserRequest struct {
	*tchttp.BaseRequest
	
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the username.
	User *string `json:"User,omitnil,omitempty" name:"User"`

	// Password. specifies the password.
	Password *string `json:"Password,omitnil,omitempty" name:"Password"`

	// Description. if not provided, no modification will be made.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// User tag. specifies to determine the access permission scope of this user to RabbitMQ Management. if it is not passed in, no modification will be made.
	Tags []*string `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Specifies the maximum number of connections for this user. if not provided, it will not be modified.
	MaxConnections *int64 `json:"MaxConnections,omitnil,omitempty" name:"MaxConnections"`

	// Specifies the maximum number of channels for this user. if not provided, it will not be modified.
	MaxChannels *int64 `json:"MaxChannels,omitnil,omitempty" name:"MaxChannels"`
}

func (r *ModifyRabbitMQServerlessUserRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyRabbitMQServerlessUserRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "User")
	delete(f, "Password")
	delete(f, "Description")
	delete(f, "Tags")
	delete(f, "MaxConnections")
	delete(f, "MaxChannels")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyRabbitMQServerlessUserRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyRabbitMQServerlessUserResponseParams struct {
	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type ModifyRabbitMQServerlessUserResponse struct {
	*tchttp.BaseResponse
	Response *ModifyRabbitMQServerlessUserResponseParams `json:"Response"`
}

func (r *ModifyRabbitMQServerlessUserResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyRabbitMQServerlessUserResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyRabbitMQServerlessVirtualHostRequestParams struct {
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost name.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Specifies the description information of the vhost.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// Message trace switch. specifies that the value true turns on the switch and the value false turns it off.
	TraceFlag *bool `json:"TraceFlag,omitnil,omitempty" name:"TraceFlag"`
}

type ModifyRabbitMQServerlessVirtualHostRequest struct {
	*tchttp.BaseRequest
	
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the vhost name.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Specifies the description information of the vhost.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// Message trace switch. specifies that the value true turns on the switch and the value false turns it off.
	TraceFlag *bool `json:"TraceFlag,omitnil,omitempty" name:"TraceFlag"`
}

func (r *ModifyRabbitMQServerlessVirtualHostRequest) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyRabbitMQServerlessVirtualHostRequest) FromJsonString(s string) error {
	f := make(map[string]interface{})
	if err := json.Unmarshal([]byte(s), &f); err != nil {
		return err
	}
	delete(f, "InstanceId")
	delete(f, "VirtualHost")
	delete(f, "Description")
	delete(f, "TraceFlag")
	if len(f) > 0 {
		return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "ModifyRabbitMQServerlessVirtualHostRequest has unknown keys!", "")
	}
	return json.Unmarshal([]byte(s), &r)
}

// Predefined struct for user
type ModifyRabbitMQServerlessVirtualHostResponseParams struct {
	// The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
	RequestId *string `json:"RequestId,omitnil,omitempty" name:"RequestId"`
}

type ModifyRabbitMQServerlessVirtualHostResponse struct {
	*tchttp.BaseResponse
	Response *ModifyRabbitMQServerlessVirtualHostResponseParams `json:"Response"`
}

func (r *ModifyRabbitMQServerlessVirtualHostResponse) ToJsonString() string {
    b, _ := json.Marshal(r)
    return string(b)
}

// FromJsonString It is highly **NOT** recommended to use this function
// because it has no param check, nor strict type check
func (r *ModifyRabbitMQServerlessVirtualHostResponse) FromJsonString(s string) error {
	return json.Unmarshal([]byte(s), &r)
}

type QueueQuota struct {
	// Specifies the maximum number of queues that can be created.
	MaxQueue *int64 `json:"MaxQueue,omitnil,omitempty" name:"MaxQueue"`

	// Number of queues created.
	UsedQueue *int64 `json:"UsedQueue,omitnil,omitempty" name:"UsedQueue"`
}

type RabbitMQBindingListInfo struct {
	// binding id.
	BindingId *int64 `json:"BindingId,omitnil,omitempty" name:"BindingId"`

	// Vhost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Source exchange name.
	Source *string `json:"Source,omitnil,omitempty" name:"Source"`

	// Target type. valid values: queue or exchange.
	DestinationType *string `json:"DestinationType,omitnil,omitempty" name:"DestinationType"`

	// Target resource name.
	Destination *string `json:"Destination,omitnil,omitempty" name:"Destination"`

	// Binding key.
	RoutingKey *string `json:"RoutingKey,omitnil,omitempty" name:"RoutingKey"`

	// Source exchange type.
	SourceExchangeType *string `json:"SourceExchangeType,omitnil,omitempty" name:"SourceExchangeType"`

	// Creation time
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Modification time
	ModifyTime *string `json:"ModifyTime,omitnil,omitempty" name:"ModifyTime"`
}

type RabbitMQClusterInfo struct {
	// Cluster ID
	ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"`

	// Cluster name.
	ClusterName *string `json:"ClusterName,omitnil,omitempty" name:"ClusterName"`

	// Region information
	Region *string `json:"Region,omitnil,omitempty" name:"Region"`

	// Creation time, in milliseconds
	CreateTime *uint64 `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Cluster description remark information
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// VPC and network information.
	Vpcs []*VpcEndpointInfo `json:"Vpcs,omitnil,omitempty" name:"Vpcs"`

	// Availability zone information
	ZoneIds []*int64 `json:"ZoneIds,omitnil,omitempty" name:"ZoneIds"`

	// number of virtual hosts.
	VirtualHostNumber *int64 `json:"VirtualHostNumber,omitnil,omitempty" name:"VirtualHostNumber"`

	// Number of queues
	QueueNumber *int64 `json:"QueueNumber,omitnil,omitempty" name:"QueueNumber"`

	// Number of messages produced per second (measurement unit: messages/second).
	MessagePublishRate *float64 `json:"MessagePublishRate,omitnil,omitempty" name:"MessagePublishRate"`

	// Number of accumulated messages. valid values: pieces.
	MessageStackNumber *int64 `json:"MessageStackNumber,omitnil,omitempty" name:"MessageStackNumber"`

	// Expiration time
	ExpireTime *int64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// number of channels.
	ChannelNumber *int64 `json:"ChannelNumber,omitnil,omitempty" name:"ChannelNumber"`

	// number of connections.
	ConnectionNumber *int64 `json:"ConnectionNumber,omitnil,omitempty" name:"ConnectionNumber"`

	// Number of consumers.
	ConsumerNumber *int64 `json:"ConsumerNumber,omitnil,omitempty" name:"ConsumerNumber"`

	// Number of Exchanges.
	ExchangeNumber *int64 `json:"ExchangeNumber,omitnil,omitempty" name:"ExchangeNumber"`

	// Cluster exception information.
	ExceptionInformation *string `json:"ExceptionInformation,omitnil,omitempty" name:"ExceptionInformation"`

	// Instance status. 0 indicates creating in progress. 1 indicates normal. 2 indicates isolated. 3 indicates terminated. 4 indicates exception. 5 indicates delivery failed.
	ClusterStatus *int64 `json:"ClusterStatus,omitnil,omitempty" name:"ClusterStatus"`

	// Auto-renewal flag. 0 indicates the default status (If the default status is not configured, manual renewal is enabled), 1 indicates auto-renewal, and 2 indicates explicitly no auto-renewal (configured by the user).
	AutoRenewFlag *int64 `json:"AutoRenewFlag,omitnil,omitempty" name:"AutoRenewFlag"`

	// Whether the mirrored queue strategy is enabled. 1 indicates enabled, and 0 indicates not enabled.
	MirrorQueuePolicyFlag *int64 `json:"MirrorQueuePolicyFlag,omitnil,omitempty" name:"MirrorQueuePolicyFlag"`

	// Number of messages consumed per second (measurement unit: messages/second).
	MessageConsumeRate *float64 `json:"MessageConsumeRate,omitnil,omitempty" name:"MessageConsumeRate"`

	// Specifies the cluster version information.
	ClusterVersion *string `json:"ClusterVersion,omitnil,omitempty" name:"ClusterVersion"`

	// Billing mode. valid values: 0 (postpaid), 1 (prepaid).
	PayMode *uint64 `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// Specifies the cluster type.
	InstanceType *uint64 `json:"InstanceType,omitnil,omitempty" name:"InstanceType"`

	// Specifies the message retention time, in hours.
	MessageRetainTime *uint64 `json:"MessageRetainTime,omitnil,omitempty" name:"MessageRetainTime"`
}

type RabbitMQClusterSpecInfo struct {
	// Specifies the cluster specification name.
	SpecName *string `json:"SpecName,omitnil,omitempty" name:"SpecName"`

	// Max tps.
	MaxTps *uint64 `json:"MaxTps,omitnil,omitempty" name:"MaxTps"`

	// Maximum number of queues.
	MaxQueueNum *uint64 `json:"MaxQueueNum,omitnil,omitempty" name:"MaxQueueNum"`

	// Maximum number of exchanges.
	MaxExchangeNum *uint64 `json:"MaxExchangeNum,omitnil,omitempty" name:"MaxExchangeNum"`

	// Maximum number of vhosts.
	MaxVhostNum *uint64 `json:"MaxVhostNum,omitnil,omitempty" name:"MaxVhostNum"`

	// Maximum number of connections.
	MaxConnNum *uint64 `json:"MaxConnNum,omitnil,omitempty" name:"MaxConnNum"`

	// Maximum number of users.
	MaxUserNum *uint64 `json:"MaxUserNum,omitnil,omitempty" name:"MaxUserNum"`

	// Peak bandwidth. abandoned.
	MaxBandWidth *uint64 `json:"MaxBandWidth,omitnil,omitempty" name:"MaxBandWidth"`

	// Public network bandwidth. abandoned.
	PublicNetworkTps *uint64 `json:"PublicNetworkTps,omitnil,omitempty" name:"PublicNetworkTps"`
}

type RabbitMQConnection struct {
	// Connection name.
	ConnectionName *string `json:"ConnectionName,omitnil,omitempty" name:"ConnectionName"`

	// Client IP
	PeerHost *string `json:"PeerHost,omitnil,omitempty" name:"PeerHost"`

	// Specifies the connection status, including starting, tuning, opening, running, flow, blocking, blocked, closing, and closed.
	State *string `json:"State,omitnil,omitempty" name:"State"`

	// User that who has created this connection.
	User *string `json:"User,omitnil,omitempty" name:"User"`

	// Whether ssl is enabled.
	SSL *bool `json:"SSL,omitnil,omitempty" name:"SSL"`

	// Connection protocol.
	Protocol *string `json:"Protocol,omitnil,omitempty" name:"Protocol"`

	// Specifies the number of channels under the connection.
	Channels *int64 `json:"Channels,omitnil,omitempty" name:"Channels"`
}

type RabbitMQConsumersListInfo struct {
	// Client Ip.
	ClientIp *string `json:"ClientIp,omitnil,omitempty" name:"ClientIp"`

	// Consumer Tag.
	ConsumerTag *string `json:"ConsumerTag,omitnil,omitempty" name:"ConsumerTag"`
}

type RabbitMQExchangeListInfo struct {
	// exchange name.
	ExchangeName *string `json:"ExchangeName,omitnil,omitempty" name:"ExchangeName"`

	// Remarks.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// Specifies the exchange type. valid values: "fanout", "direct", "topic", "headers".
	ExchangeType *string `json:"ExchangeType,omitnil,omitempty" name:"ExchangeType"`

	// VHost parameter.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// exchange creator. valid values: `system` (generated by the system), `user` (user-created).
	ExchangeCreator *string `json:"ExchangeCreator,omitnil,omitempty" name:"ExchangeCreator"`

	// exchange creation time.
	CreateTimeStamp *string `json:"CreateTimeStamp,omitnil,omitempty" name:"CreateTimeStamp"`

	// exchange modification time.
	ModTimeStamp *string `json:"ModTimeStamp,omitnil,omitempty" name:"ModTimeStamp"`

	// Input message rate.
	MessageRateIn *float64 `json:"MessageRateIn,omitnil,omitempty" name:"MessageRateIn"`

	// Output message rate.
	MessageRateOut *float64 `json:"MessageRateOut,omitnil,omitempty" name:"MessageRateOut"`

	// Specifies whether it is a persistent exchange. true indicates persistent, and false indicates non-persistent.
	Durable *bool `json:"Durable,omitnil,omitempty" name:"Durable"`

	// Specifies whether to automatically delete the switch. true indicates automatic deletion, and false indicates non-automatic deletion.
	AutoDelete *bool `json:"AutoDelete,omitnil,omitempty" name:"AutoDelete"`

	// Whether it is an internal switch. valid values: true (indicating an internal switch).
	Internal *bool `json:"Internal,omitnil,omitempty" name:"Internal"`

	// Specifies the ID of the associated instance to which the switch belongs.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// The name of the effective policy.
	Policy *string `json:"Policy,omitnil,omitempty" name:"Policy"`

	// Additional parameters key-value objects.
	Arguments *string `json:"Arguments,omitnil,omitempty" name:"Arguments"`

	// Number of unscheduled delayed messages.
	MessagesDelayed *uint64 `json:"MessagesDelayed,omitnil,omitempty" name:"MessagesDelayed"`
}

type RabbitMQPermission struct {
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the username, which is the user associated with the permission.
	User *string `json:"User,omitnil,omitempty" name:"User"`

	// vhost name.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Types of permissions. declare related operations. for the user, it is operable to perform operations on the resource name under the vhost that matches the regular expression.
	ConfigRegexp *string `json:"ConfigRegexp,omitnil,omitempty" name:"ConfigRegexp"`

	// Types of permissions. message write related operations. the user can operate on the resource names under the vhost that match the regular expression.
	WriteRegexp *string `json:"WriteRegexp,omitnil,omitempty" name:"WriteRegexp"`

	// Types of permissions. message read related operations. the user can operate on the resource name under the vhost that matches the regular expression.
	ReadRegexp *string `json:"ReadRegexp,omitnil,omitempty" name:"ReadRegexp"`

	// Creation time
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Modification time
	ModifyTime *string `json:"ModifyTime,omitnil,omitempty" name:"ModifyTime"`
}

type RabbitMQQueueListConsumerDetailInfo struct {
	// Number of consumers.
	ConsumersNumber *int64 `json:"ConsumersNumber,omitnil,omitempty" name:"ConsumersNumber"`
}

type RabbitMQQueueListInfo struct {
	// Queue name.
	QueueName *string `json:"QueueName,omitnil,omitempty" name:"QueueName"`

	// Remarks.
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// Consumer information.
	ConsumerDetail *RabbitMQQueueListConsumerDetailInfo `json:"ConsumerDetail,omitnil,omitempty" name:"ConsumerDetail"`

	// Specifies the queue type. the valid values are "classic" and "quorum".
	QueueType *string `json:"QueueType,omitnil,omitempty" name:"QueueType"`

	// Number of message backlogs.
	MessageHeapCount *int64 `json:"MessageHeapCount,omitnil,omitempty" name:"MessageHeapCount"`

	// Message production rate per second.
	MessageRateIn *float64 `json:"MessageRateIn,omitnil,omitempty" name:"MessageRateIn"`

	// Message consumption rate per second.
	MessageRateOut *float64 `json:"MessageRateOut,omitnil,omitempty" name:"MessageRateOut"`

	// Creation time
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Modification time
	ModifyTime *string `json:"ModifyTime,omitnil,omitempty" name:"ModifyTime"`

	// Specifies whether the queue is persistent. true indicates persistent, and false indicates non-persistent.
	Durable *bool `json:"Durable,omitnil,omitempty" name:"Durable"`

	// Specifies whether the queue is an auto-delete queue. true indicates auto-delete, and false indicates non-auto-delete.
	AutoDelete *bool `json:"AutoDelete,omitnil,omitempty" name:"AutoDelete"`

	// instanceId to which the queue belongs.
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Name of the virtual host to which the queue belongs.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Specifies the name of the primary node where the queue is located.
	Node *string `json:"Node,omitnil,omitempty" name:"Node"`

	// The name of the effective policy.
	Policy *string `json:"Policy,omitnil,omitempty" name:"Policy"`

	// Additional parameters key-value objects.
	Arguments *string `json:"Arguments,omitnil,omitempty" name:"Arguments"`

	// Whether it is an exclusive queue.
	Exclusive *bool `json:"Exclusive,omitnil,omitempty" name:"Exclusive"`
}

type RabbitMQServerlessAccessInfo struct {
	// Public network domain.
	PublicAccessEndpoint *string `json:"PublicAccessEndpoint,omitnil,omitempty" name:"PublicAccessEndpoint"`

	// Public network status.
	PublicDataStreamStatus *string `json:"PublicDataStreamStatus,omitnil,omitempty" name:"PublicDataStreamStatus"`
}

type RabbitMQServerlessEndpoint struct {
	// vpc id
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// subnet id
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// Access address
	VpcEndpoint *string `json:"VpcEndpoint,omitnil,omitempty" name:"VpcEndpoint"`

	// Access address status.
	VpcDataStreamEndpointStatus *string `json:"VpcDataStreamEndpointStatus,omitnil,omitempty" name:"VpcDataStreamEndpointStatus"`

	// Whether it is a public network.
	PublicNetwork *bool `json:"PublicNetwork,omitnil,omitempty" name:"PublicNetwork"`

	// Specifies the access policy.
	AccessStrategy *string `json:"AccessStrategy,omitnil,omitempty" name:"AccessStrategy"`

	// Bandwidth
	Bandwidth *int64 `json:"Bandwidth,omitnil,omitempty" name:"Bandwidth"`
}

type RabbitMQServerlessInstance struct {
	// Instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Instance name
	InstanceName *string `json:"InstanceName,omitnil,omitempty" name:"InstanceName"`

	// Instance version.
	InstanceVersion *string `json:"InstanceVersion,omitnil,omitempty" name:"InstanceVersion"`

	// Instance status. 0 indicates creating in progress. 1 indicates normal. 2 indicates isolated. 3 indicates terminated. 4 indicates exception. 5 indicates delivery failed.
	Status *int64 `json:"Status,omitnil,omitempty" name:"Status"`

	// MaxTPS
	MaxTps *int64 `json:"MaxTps,omitnil,omitempty" name:"MaxTps"`

	// MaxBandwidth
	MaxBandWidth *int64 `json:"MaxBandWidth,omitnil,omitempty" name:"MaxBandWidth"`

	// Expiration time of the cluster.
	ExpireTime *uint64 `json:"ExpireTime,omitnil,omitempty" name:"ExpireTime"`

	// Auto-renewal flag. 0 indicates the default status (If the default status is not configured, manual renewal is enabled), 1 indicates auto-renewal, and 2 indicates explicitly no auto-renewal (configured by the user).
	AutoRenewFlag *uint64 `json:"AutoRenewFlag,omitnil,omitempty" name:"AutoRenewFlag"`

	// 0: Postpaid, 1: Prepaid
	PayMode *uint64 `json:"PayMode,omitnil,omitempty" name:"PayMode"`

	// Remarks
	Remark *string `json:"Remark,omitnil,omitempty" name:"Remark"`

	// Cluster specifications
	SpecName *string `json:"SpecName,omitnil,omitempty" name:"SpecName"`

	// Exception information.
	ExceptionInformation *string `json:"ExceptionInformation,omitnil,omitempty" name:"ExceptionInformation"`

	// Public network access point.
	PublicAccessEndpoint *string `json:"PublicAccessEndpoint,omitnil,omitempty" name:"PublicAccessEndpoint"`

	// The virtual private cloud (vpc) network access point.
	Vpcs []*RabbitMQServerlessEndpoint `json:"Vpcs,omitnil,omitempty" name:"Vpcs"`

	// Instance status. 0 indicates creating in progress. 1 indicates normal. 2 indicates isolated. 3 indicates terminated. 4 indicates exception. 5 indicates delivery failed.
	ClusterStatus *int64 `json:"ClusterStatus,omitnil,omitempty" name:"ClusterStatus"`

	// Specifies the cluster type: 1.
	InstanceType *uint64 `json:"InstanceType,omitnil,omitempty" name:"InstanceType"`

	// Expiration time
	CreateTime *uint64 `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// For compatibility with the managed version, the fixed value is 0.
	NodeCount *int64 `json:"NodeCount,omitnil,omitempty" name:"NodeCount"`

	// For compatibility with the managed version, the fixed value is 0.
	MaxStorage *int64 `json:"MaxStorage,omitnil,omitempty" name:"MaxStorage"`

	// Isolation time
	IsolatedTime *uint64 `json:"IsolatedTime,omitnil,omitempty" name:"IsolatedTime"`
}

type RabbitMQServerlessWhiteListInfo struct {
	// Public network data stream allowlist.
	PublicDataStreamWhiteList *string `json:"PublicDataStreamWhiteList,omitnil,omitempty" name:"PublicDataStreamWhiteList"`

	// Public network data stream allowlist status.
	PublicDataStreamWhiteListStatus *string `json:"PublicDataStreamWhiteListStatus,omitnil,omitempty" name:"PublicDataStreamWhiteListStatus"`
}

type RabbitMQUser struct {
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Specifies the username used when logging in.
	User *string `json:"User,omitnil,omitempty" name:"User"`

	// Password. specifies the password used when logging in.
	Password *string `json:"Password,omitnil,omitempty" name:"Password"`

	// User description
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// User tag. specifies to determine the access permission scope of this user to RabbitMQ Management.
	Tags []*string `json:"Tags,omitnil,omitempty" name:"Tags"`

	// User creation time
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Last modification time of the user.
	ModifyTime *string `json:"ModifyTime,omitnil,omitempty" name:"ModifyTime"`

	// Type of User. specifies that "System" indicates System creation and "User" indicates User-created.
	Type *string `json:"Type,omitnil,omitempty" name:"Type"`

	// Specifies the maximum number of connections allowed for this user.
	MaxConnections *int64 `json:"MaxConnections,omitnil,omitempty" name:"MaxConnections"`

	// The maximum number of channels allowed for this user.
	MaxChannels *int64 `json:"MaxChannels,omitnil,omitempty" name:"MaxChannels"`
}

type RabbitMQVirtualHostInfo struct {
	// instance ID
	InstanceId *string `json:"InstanceId,omitnil,omitempty" name:"InstanceId"`

	// Vhost name.
	VirtualHost *string `json:"VirtualHost,omitnil,omitempty" name:"VirtualHost"`

	// Specifies the description information of the vhost.
	Description *string `json:"Description,omitnil,omitempty" name:"Description"`

	// Specifies the Tag of the vhost.
	Tags []*string `json:"Tags,omitnil,omitempty" name:"Tags"`

	// Creation time
	CreateTime *string `json:"CreateTime,omitnil,omitempty" name:"CreateTime"`

	// Modification time
	ModifyTime *string `json:"ModifyTime,omitnil,omitempty" name:"ModifyTime"`

	// Specifies the overview statistics information of the vhost.
	VirtualHostStatistics *RabbitMQVirtualHostStatistics `json:"VirtualHostStatistics,omitnil,omitempty" name:"VirtualHostStatistics"`

	// vhost status. specifies the status that corresponds to the native console and can be running, partial, stopped, or unknown.
	Status *string `json:"Status,omitnil,omitempty" name:"Status"`

	// Specifies the number of message backlogs.
	MessageHeapCount *int64 `json:"MessageHeapCount,omitnil,omitempty" name:"MessageHeapCount"`

	// Input message rate.
	MessageRateIn *float64 `json:"MessageRateIn,omitnil,omitempty" name:"MessageRateIn"`

	// Output message rate.
	MessageRateOut *float64 `json:"MessageRateOut,omitnil,omitempty" name:"MessageRateOut"`

	// Specifies whether a mirrored queue policy exists. true indicates existence, and false indicates non-existence.
	MirrorQueuePolicyFlag *bool `json:"MirrorQueuePolicyFlag,omitnil,omitempty" name:"MirrorQueuePolicyFlag"`
}

type RabbitMQVirtualHostStatistics struct {
	// Number of queues of the current vhost.
	CurrentQueues *int64 `json:"CurrentQueues,omitnil,omitempty" name:"CurrentQueues"`

	// Number of exchanges in the current vhost.
	CurrentExchanges *int64 `json:"CurrentExchanges,omitnil,omitempty" name:"CurrentExchanges"`

	// Number of current connections of the vhost.
	CurrentConnections *int64 `json:"CurrentConnections,omitnil,omitempty" name:"CurrentConnections"`

	// Number of channels for the current vhost.
	CurrentChannels *int64 `json:"CurrentChannels,omitnil,omitempty" name:"CurrentChannels"`

	// Number of users of the current vhost.
	CurrentUsers *int64 `json:"CurrentUsers,omitnil,omitempty" name:"CurrentUsers"`
}

type UserQuota struct {
	// Maximum number of users.
	MaxUser *int64 `json:"MaxUser,omitnil,omitempty" name:"MaxUser"`

	// Used number of users.
	UsedUser *int64 `json:"UsedUser,omitnil,omitempty" name:"UsedUser"`
}

type VirtualHostQuota struct {
	// Maximum number of virtual hosts.
	MaxVirtualHost *uint64 `json:"MaxVirtualHost,omitnil,omitempty" name:"MaxVirtualHost"`

	// Number of already used virtual hosts.
	UsedVirtualHost *uint64 `json:"UsedVirtualHost,omitnil,omitempty" name:"UsedVirtualHost"`
}

type VpcEndpointInfo struct {
	// VPC ID
	VpcId *string `json:"VpcId,omitnil,omitempty" name:"VpcId"`

	// Subnet ID
	SubnetId *string `json:"SubnetId,omitnil,omitempty" name:"SubnetId"`

	// vpc access point information.
	VpcEndpoint *string `json:"VpcEndpoint,omitnil,omitempty" name:"VpcEndpoint"`

	// vpc access point status.
	// OFF/ON/CREATING/DELETING
	VpcDataStreamEndpointStatus *string `json:"VpcDataStreamEndpointStatus,omitnil,omitempty" name:"VpcDataStreamEndpointStatus"`
}